package controle;

import java.util.Observable;
import java.util.Observer;
import java.util.Vector;

import javax.swing.JList;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

import abstraction.Cours;
/** controleur qui gère l'affichage de la liste des évaluations
 * 
 * @author PICOSSON
 *
 */
public class ControlJListEval implements Observer, ListSelectionListener {
	private JList<String> liste;
	private Cours modele;
	
	
	public ControlJListEval(Cours modele, JList<String> liste) {
		this.modele = modele;
		this.liste = liste;
		String[] data = { "-" };
		this.liste.setListData(data);
		this.liste.setSelectedIndex(0);
	}

	
	public void valueChanged(ListSelectionEvent e) {
		if (this.liste.getSelectedIndex() != -1
				&& !this.liste.getSelectedValue().equals("-"))
			this.modele.setEvaluationCourante(this.modele.findEvaluation(this.modele.getModuleCourant(), this.liste.getSelectedValue()).getId_evaluation()); 
		else if (this.liste.getSelectedIndex() != -1)
			this.modele.setEvaluationCourante(-1);
	}		
	

	@Override
	public void update(Observable arg0, Object arg1) {
		Integer iMessage = (Integer) arg1;
		if (iMessage == Cours.CHANGEMENT_MODULE_COURANT
				|| iMessage == Cours.CHANGEMENT_EVALUATIONS) {
			int moduleCourant = this.modele.getModuleCourant();
			if (moduleCourant != -1) {
				Vector<String> data = this.modele
						.getEvaluationNames(moduleCourant);
				data.add(0, "-");
				this.liste.setListData(data);
			} else {
				String[] data = { "-" };
				this.liste.setListData(data);
			}			
			if(this.modele.getEvaluationCourante() != -1 ){
				this.liste.setSelectedValue(this.modele.findEvaluation(this.modele.getEvaluationCourante()).getNom(), true);
			}
			else{
				this.liste.setSelectedIndex(0);
			}			
			this.liste.repaint();
		}		
	}
}
